<?php
/**
 * User: zhengze
 * Date: 2019/7/2
 * Time: 17:45
 */

namespace common\helper;

use common\traits\InstanceTrait;

/**
 * Class FunctionHelper
 * @package common
 */
class FunctionHelper
{
    use InstanceTrait;

    /**
     * return !empty($value) ? $value : $default;
     * @param $value
     * @param $default
     * @return mixed
     */
    public static function empty_default($value, $default)
    {
        return !empty($value) ? $value : $default;
    }

    /**
     * 判断一个字符串在不在混合类型(数组,字符串)内
     * 字符串可以和str完全匹配,也可以用','号隔开
     * $str匹配或者真等于ture返回ture
     * @param $mixed
     * @param bool
     */
    public static function check_mixed_exist($mixed, $str)
    {
        if ($str === true) {
            return true;
        }
        if (is_string($mixed)) {
            if (strpos($mixed, ',') !== false) {
                if ($mixed == $str) {
                    return true;
                }
            } else {
//          转化为数组,调用数组方法
                $mixed = explode(',', $mixed);
            }
        }
        //数组
        if (is_array($mixed) && in_array($str, $mixed)) {
            return true;
        }
        //数组
        if (is_object($mixed) && isset($mixed->$str)) {
            return true;
        }
        return false;
    }

    /**
     * 按照规则(默认值,部分提取)返回request数组
     * @param Array $rule 数组
     * <br>['field'=>'default_value']
     * @param string $request_method 获取方式 get,post,param(默认)
     * @return boole
     */
    public static function input_extract_rule($rule, $request_method = '')
    {
        $ret = [];
        $input = input($request_method . '.');
        foreach ($rule as $key => $value) {
            if (!is_numeric($key) && isset($input[$key])) {
                $ret[$key] = $input[$key];
            } else {
                $ret[$key] = $value;
            }
        }
        return $ret;
    }

    /**
     *  生成带该页面get的链接
     * @param string $str 控制器/方法
     * @param type 需要设置的get参数
     * @return url 生成的链接
     */
    public static function merge_url($str, $arr = [], $method = "get.")
    {
        return url($str, array_merge(input($method), $arr));
    }
}
